<HTML
><HEAD
><TITLE
>Run levels</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.63
"><LINK
REL="HOME"
TITLE="The Linux System Administrator's Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="init"
HREF="init.html"><LINK
REL="PREVIOUS"
TITLE="Configuring init to start 
getty: the 
/etc/inittab file"
HREF="x2051.html"><LINK
REL="NEXT"
TITLE="Special configuration in 
/etc/inittab"
HREF="x2151.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Linux System Administrator's Guide: Version 0.7</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x2051.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 9. <B
CLASS="COMMAND"
>init</B
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x2151.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN2111"
>9.3. Run levels</A
></H1
><P
>A <I
CLASS="GLOSSTERM"
>run level</I
> is a state of
	<B
CLASS="COMMAND"
>init</B
> and the whole system that defines what
	system services are operating. Run levels are identified by
	numbers, see <A
HREF="x2111.html#RUN-LEVELS"
>Table 9-1</A
>.  There is no consensus of 
how to use the
	user defined run levels (2 through 5). Some system administrators
	use run levels to define which subsystems are working, e.g.,
	whether X is running, whether the network is operational, and
	so on. Others have all subsystems always running or start and
	stop them individually, without changing run levels, since run
	levels are too coarse for controlling their systems.  You need
	to decide for yourself, but it might be easiest to follow the
	way your Linux distribution does things.</P
><DIV
CLASS="TABLE"
><A
NAME="RUN-LEVELS"
></A
><P
><B
>Table 9-1. Run level numbers</B
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>0</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Halt the system.</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>1</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Single-user mode (for special 
administration).</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>2-5</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Normal operation (user 
defined).</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
>6</TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
>Reboot.</TD
></TR
></TBODY
></TABLE
></DIV
><P
>Run levels are configured in <TT
CLASS="FILENAME"
>/etc/inittab</TT
> 
by lines like
	the following:

<TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
>l2:2:wait:/etc/init.d/rc 2</PRE
></FONT
></TD
></TR
></TABLE
>

	The first field is an arbitrary label, the second one means
	that this applies for run level 2. The third field means
	that <B
CLASS="COMMAND"
>init</B
> should run the command in the
	fourth field once, when the run level is entered, and that
	<B
CLASS="COMMAND"
>init</B
> should wait for it to complete. The
	<TT
CLASS="FILENAME"
>/etc/init.d/rc</TT
> command runs whatever
	commands are necessary to start and stop services to enter run
	level 2.</P
><P
>The command in the fourth field does all the hard work of
	setting up a run level. It starts services that aren't already
	running, and stops services that shouldn't be running in the
	new run level any more. Exactly what the command is, and how run
	levels are configured, depends on the Linux distribution.</P
><P
>When <B
CLASS="COMMAND"
>init</B
> starts, it looks for a line
	in <TT
CLASS="FILENAME"
>/etc/inittab</TT
> that specifies the default
	run level:

<TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
>id:2:initdefault:</PRE
></FONT
></TD
></TR
></TABLE
>

	You can ask <B
CLASS="COMMAND"
>init</B
> to go to a non-default run
	level at startup by giving the kernel a command line argument
	of <TT
CLASS="LITERAL"
>single</TT
> or <TT
CLASS="LITERAL"
>emergency</TT
>.
	Kernel command line arguments can be given via LILO, for example.
	This allows you to choose the single user mode (run level 1).</P
><P
>While the system is running, the <B
CLASS="COMMAND"
>telinit</B
>
	command can change the run level. When the run level is
	changed, <B
CLASS="COMMAND"
>init</B
> runs the relevant command from
	<TT
CLASS="FILENAME"
>/etc/inittab</TT
>.  </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x2051.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x2151.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Configuring <B
CLASS="COMMAND"
>init</B
> to start 
<B
CLASS="COMMAND"
>getty</B
>: the 
<TT
CLASS="FILENAME"
>/etc/inittab</TT
> file</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="init.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Special configuration in 
<TT
CLASS="FILENAME"
>/etc/inittab</TT
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>